package aceim.app.view.page.chat;
import aceim.api.dataentity.Message;
import aceim.api.dataentity.MessageAckState;
import aceim.api.dataentity.tkv.MessageAttachment;
import aceim.api.utils.Logger;
import android.os.Parcel;
import android.os.Parcelable;
import android.widget.ArrayAdapter;
public final class ChatMessageHolder implements Parcelable{
private final Message mMessage;
private final String mSenderName;
private ArrayAdapter<MessageAttachment> mAttachmentsAdapter;
private MessageAckState mAckState = null;
public ChatMessageHolder(Message message, String senderName) {
super();
this.mMessage = message;
this.mSenderName = senderName;
}
/**
* @return the mMessage
*/
public Message getMessage() {
return mMessage;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(mSenderName);
out.writeString(mMessage.getClass().getName());
out.writeParcelable(mMessage, flags);
}
public static final Parcelable.Creator<ChatMessageHolder> CREATOR = new Parcelable.Creator<ChatMessageHolder>() {
public ChatMessageHolder createFromParcel(Parcel in) {
return new ChatMessageHolder(in);
}
public ChatMessageHolder[] newArray(int size) {
return new ChatMessageHolder[size];
}
};
private ChatMessageHolder(Parcel in) {
mSenderName = in.readString();
String className = in.readString();
Class<?> cls;
try {
cls = (Class<?>) Class.forName(className);
} catch (ClassNotFoundException e) {
Logger.log(e);
cls = null;
}
mMessage = (Message) (cls!=null ? in.readParcelable(cls.getClassLoader()) : null);
}
/**
* @return the mAckState
*/
public MessageAckState getAckState() {
return mAckState;
}
/**
* @param mAckState the mAckState to set
*/
public void setAckState(MessageAckState ackState) {
this.mAckState = ackState;
}
/**
* @return the mSenderName
*/
public String getSenderName() {
return mSenderName;
}
/**
* @return the mAttachmentsAdapter
*/
public ArrayAdapter<MessageAttachment> getAttachmentsAdapter() {
return mAttachmentsAdapter;
}
/**
* @param mAttachmentsAdapter the mAttachmentsAdapter to set
*/
public void setAttachmentsAdapter(ArrayAdapter<MessageAttachment> mAttachmentsAdapter) {
this.mAttachmentsAdapter = mAttachmentsAdapter;
}
}